from collections import defaultdict
from typing import List


class Solution:
    def totalFruit(self, fruits: List[int]) -> int:
        # 两个篮子，只能采摘同一类型的水果，尽可能采摘多课树
        # 思路:字典存储不同种类的水果，如果字典长度大于2，需要移除左窗口，使其满足长度<=2
        left=0
        ans=0
        # 记录品类
        cnt=defaultdict(int)
        for right,x in enumerate(fruits):
            # 添加右窗口
            cnt[x]+=1
            while len(cnt)>2:
                # 移除做窗口的值
                cnt[fruits[left]]-=1
                # 字典移除元素，否则长度不会改变
                if cnt[fruits[left]]==0:
                    cnt.pop(fruits[left])
                left+=1
            # 更新答案
            ans=max(ans,right-left+1)
        return ans

